package com.beautify.utils;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

public class AliOssUtil {
    public static final String ACCESS_KEY_ID = "LTAI5tMxehxAzAXx3yg3VWnk";
    private static final String ENDPOINT = "oss-cn-hangzhou.aliyuncs.com";
    private static final String SECRET_ACCESS_KEY = "6aB5cOjm1QWoZHkklneth3ncGPLlWN";
    private static final String BUCKET_NAME = "qweztt";

    //上传文件,返回文件的公网访问地址
    public static String uploadFile(String objectName, InputStream inputStream) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, SECRET_ACCESS_KEY);
        //公文访问地址
        String url = "";
        try {
            // 创建存储空间。
            ossClient.createBucket(BUCKET_NAME);
            ossClient.putObject(BUCKET_NAME, objectName, inputStream);
            url = "https://" + BUCKET_NAME + "." + ENDPOINT.substring(ENDPOINT.lastIndexOf("/") + 1) + "/" + objectName;
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return url;
    }

    // 上传视频，返回视频的公网访问地址
    public static String uploadMedia(MultipartFile file) {
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, SECRET_ACCESS_KEY);
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(file.getSize());
        metadata.setCacheControl("no-cache");
        metadata.setContentType(file.getContentType());

        try {
            ossClient.putObject(BUCKET_NAME, file.getOriginalFilename(), file.getInputStream(), metadata);
        } catch (IOException e) {
            e.printStackTrace();
        }
        ossClient.shutdown();
        return String.format("https://%s.oss-cn-hangzhou.aliyuncs.com/%s/%s", BUCKET_NAME, file.getOriginalFilename(), file.getOriginalFilename());
    }
}